<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>全国空气质量污染程度地图分布</title>
    <style>
        #container {
            width: 100%;
            height: 100%;
        }
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=5ieMMexWmzB9jivTq6oCRX9j&callback"></script>
</head>
<body>
    <div id="container"></div>
    <script type="text/javascript">
        var map = new BMap.Map("container");
        var point = new BMap.Point(116.404, 39.915);
        map.centerAndZoom(point, 4);
        map.enableScrollWheelZoom();

        // 获取全国城市列表
        function getCityList() {
            return new Promise(function (resolve, reject) {
                // 这里需要调用一个API来获取全国城市列表，例如：http://api.example.com/getCityList
                // 假设已经获取到了城市列表数据，存储在cityList变量中
                var cityList = [
                    {name: "北京", lng: 116.407394, lat: 39.904211},
                    {name: "上海", lng: 121.473701, lat: 31.230416},
                    {name: "广州", lng: 113.264385, lat: 23.129110},
                    // ... 其他城市数据
                ];
                resolve(cityList);
            });
        }

        // 根据城市名称获取空气质量数据
        function getAirQualityData(cityName) {
            return new Promise(function (resolve, reject) {
                // 这里需要调用一个API来获取空气质量数据，例如：http://api.example.com/getAirQualityData?city=城市名称
                // 假设已经获取到了空气质量数据，存储在airQualityData变量中
                var airQualityData = {
                    cityName: cityName,
                    aqi: Math.floor(Math.random() * 300) // 随机生成一个0-300之间的空气质量指数
                };
                resolve(airQualityData);
            });
        }

        // 绘制空气质量热力图
        function drawHeatmap(data) {
            var heatmapOverlay = new BMapLib.HeatmapOverlay({"radius": 20});
            map.addOverlay(heatmapOverlay);
            heatmapOverlay.setDataSet({data: data, max: 300});
            heatmapOverlay.show();
        }

        // 主程序
        function main() {
            getCityList().then(function (cityList) {
                var airQualityDataPromises = cityList.map(function (city) {
                    return getAirQualityData(city.name);
                });
                Promise.all(airQualityDataPromises).then(function (airQualityData) {
                    var heatmapData = airQualityData.map(function (item) {
                        return {lng: item.lng, lat: item.lat, count: item.aqi};
                    });
                    drawHeatmap(heatmapData);
                }).catch(function (error) {
                    console.error('获取空气质量数据失败：', error);
                });
            }).catch(function (error) {
                console.error('获取城市列表失败：', error);
            });
        }

        main();
    </script>
</body>
</html>
